package com.dhcc.DRGsHosp.application;


import java.util.List;
import java.util.Map;
import java.util.Set;

import com.dhcc.DRGsHosp.core.domain.Department;
import com.dhcc.DRGsHosp.core.domain.IndexCal;

public interface DepartmentApplication {

	public Department getDepartment(String depCode);
	
	public void creatDepartment(Department department);
	
	public void updateDepartment(Department department);
	
	public void removeDepartment(Department department);
	
	public void removeDepartments(Set<Department> departments);
	
	public List<Department> findAllDepartment();
	
	/**
	 * 
	 * @methodname    :findDepsByDepGroup
	 * @description   : 从首页表获取符合条件的病人的科室
	 * @param         :
	 * @author        :fulianxia
	 * @return        :
	 * @date          :2015年11月23日
	 */
	public List<Map<String,Object>> findDepsByDepGroup(IndexCal indexCal);
	
	
	/**
	 * 
	 * @methodname    :findWardsByCondition
	 * @description   : 按条件查询病区
	 * @param         :
	 * @author        :mazhaoyan
	 * @return        :
	 * @date          :2016年9月12日
	 */
	public List<Object[]> findWardsByCondition(IndexCal queryVo);
	
	
	
	/**
	 * 
	 * @methodname    :getAllDeps
	 * @description   : 
	 * @param         :
	 * @author        :fulianxia
	 * @return        :
	 * @date          :2015年5月8日
	 */
	public List<Department> getAllDeps();

	/**
	 * @methodname    :findAllDepartment
	 * @description   : 
	 * @param         :
	 * @author        :fulianxia
	 * @return        :
	 * @date          :2015年5月15日
	 */
	public Object findAllDepartment(Department entity);
	
	/**
	 * 
	 * @methodname    :findDepCodeByName
	 * @description   :根据科室名称查询科室代码
	 * @param         :
	 * @author        :liqingyang
	 * @return        :
	 * @date          :2015年5月19日
	 */
	public String findDepCodeByName(String depName);
	/**
	 * 
	 * @methodname    :findDepNameByCode
	 * @description   : 根据科室名称代码查询科室名称
	 * @param         :
	 * @author        :mazhaoyan
	 * @return        :
	 * @date          :2016年12月23日
	 */
	public String findDepNameByCode(String depCode);

	/**
	 * @methodname    :findDepFromMedicalrecord
	 * @description   : 
	 * @param         :
	 * @author        :lileizheng
	 * @return        :
	 * @date          :2015年5月22日
	 */
	public List<Object> findDepFromMedicalrecord(IndexCal IndexCal);
	
	/**
	 * 
	 * @methodname    :findDepNamesByDepGroupCode
	 * @description   : 获取指定科室组代码的所有科室的名称
	 * @param         :
	 * @author        :mazhaoyan
	 * @return        :
	 * @date          :2015年5月25日
	 */
	public String findDepNamesByDepGroupCode(String depgroupCode);

	/**
	 * @methodname    :isOrderExist
	 * @description   : 
	 * @param         :
	 * @author        :fulianxia
	 * @return        :
	 * @date          :2015年7月1日
	 */
	public Boolean isOrderExist(String order,String code);

	/**
	 * @methodname    :getDepartmentByDepGroup
	 * @description   : 
	 * @param         :
	 * @author        :lileizheng
	 * @return        :
	 * @date          :2015年7月13日
	 */
	public List<Department> getDepartmentByDepGroup(String pardepgroupCode);
	
	/**
	 * @methodname    :getDepartmentByDepGroup
	 * @description   : 
	 * @param         :
	 * @author        : chenhanlin
	 * @return        :
	 * @date          :2017年7月13日
	 */
	public int excuteUpdate(String sql,Map<String,Object> condition);

	/**
	 * @methodname    :findDepDRGs
	 * @description   : 
	 * @param         :
	 * @author        :lileizheng
	 * @return        :
	 * @date          :2017年1月5日
	 */
	public List<Object[]> findDepDRGs(String depCode);
	/**
	 * 根据科室编码查询科室
	 * @param depCode
	 * @return
	 */
	public Department findDepartmentByDepCode(String depCode);
	
	/**
	 *  执行查询SQL
	 *  executeQueryForList.  
	 *  @Description：
	 *  @Author ChenHanlin
	 *  @param sql
	 *  @param obj
	 *  @return 
	 *  @Date:2017年12月14日上午10:46:08
	 */
	public List<Map<String, Object>> executeQueryForList(String sql,Map<String,Object> condition) ;

	public Object findAllDepByHospCode(IndexCal entity);
	/**
	 * 
	 *  findAllHosp.  
	 *  @Description：查询所有科室
	 *  @Author WENYI
	 *  @return 
	 *  @Date:2018年1月26日下午3:10:13
	 */
	public List<Map<String,Object>> findAllHosp();
	/**
	 * 
	 *  updateDepNameByCode.  
	 *  @Description：根据科室代码更新科室名称
	 *  @Author mazhaoyan
	 *  @param dep
	 *  @return 
	 *  @Date:2018年2月11日下午4:27:25
	 */
	public int updateDepNameByCode(Department dep) ;
	/**
	 * 
	 *  updateDepCodeInIpinfo.  
	 *  @Description：更新医师表中的科室代码
	 *  @Author mazhaoyan
	 *  @param oldCode
	 *  @param newCode 
	 *  @Date:2018年2月11日下午4:29:07
	 */
	public void updateDepCodeInIpinfo(String oldCode,String newCode) ;
	/**
	 * 
	 *  updateDepCodeInDep.  
	 *  @Description：
	 *  @Author mazhaoyan
	 *  @param oldCode
	 *  @param newCode 
	 *  @Date:2018年2月11日下午4:32:15
	 */
	public void updateDepCodeInDep(String oldCode,String newCode) ;
	/**
	 * 
	 *  updateBaseInfo.  
	 *  @Description：更新科室所属的院区code
	 *  @Author mazhaoyan
	 *  @param depCode
	 *  @param hospCode 
	 *  @Date:2018年3月9日下午4:37:58
	 */
	public void updateBaseInfo(String depCode, String hospCode);
	/**
	 * 
	 * @Title: getDepGroupByDepCode  
	 * @Description: 根据科室编码获取科室组编码
	 * @param @param code
	 * @param @return   
	 * @return String  
	 * @author shaozhiyuan
	 * @date 2018年4月4日  
	 * @version V3.1.0 
	 * @throws
	 */
	public String getDepGroupByDepCode (String code);
	
	/**
	 *  查询科室最大显示序号
	 *  findOrderMax.  
	 *  @Description：
	 *  @Author ChenHanlin
	 *  @return 
	 *  @Date:2018年4月25日上午11:29:44
	 */
	public Double findOrderMax();

	/**
	 * @methodname    :findDepNamesByDepCodes
	 * @description   : 
	 * @param         :
	 * @author        :lileizheng
	 * @return        :
	 * @date          :2018年11月30日
	 */
	public List<Map<String, Object>> findDepNamesByDepCodes(String depCodes);
}

